using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace LibreriaWeb
{
    /// <summary>
    /// Clase base utilizada para extender desde ABMs.
    /// </summary>
    public class ABMSimpleBase : System.Web.UI.Page
    {
        /// <summary>
        /// Constructor.
        /// </summary>
        public ABMSimpleBase()
        {
        }

        /// <summary>
        /// Agregar una clave primaria en el ViewState.
        /// </summary>
        /// <param name="clave">Clave</param>
        protected void AgregarClave(object clave)
        {
            ViewState.Add("ClavePrimariaQWERTY", clave);
        }

        /// <summary>
        /// Borrar clave primaria.
        /// </summary>
        protected void BorrarClave()
        {
            ViewState.Remove("ClavePrimariaQWERTY");
        }

        /// <summary>
        /// Consultar si existe clave primaria.
        /// </summary>
        /// <returns>True o False.</returns>
        protected bool ExisteClave()
        {
            return ViewState["ClavePrimariaQWERTY"] != null;
        }

        /// <summary>
        /// Obtener la clave primaria convertida a string.
        /// </summary>
        protected string ClaveString
        {
            get
            {
                return ViewState["ClavePrimariaQWERTY"].ToString();
            }
        }

        /// <summary>
        /// Obtener la clave primaria convertida a Int32.
        /// </summary>
        protected int ClaveInt32
        {
            get
            {
                return int.Parse(ViewState["ClavePrimariaQWERTY"].ToString());
            }
        }

        /// <summary>
        /// Agregar un valor en el ViewState.
        /// </summary>
        /// <param name="nombre">Nombre</param>
        /// <param name="valor">Valor</param>
        protected void AgregarValor(string nombre, object valor)
        {
            ViewState.Add(nombre, valor);
        }

        /// <summary>
        /// Borrar valor.
        /// </summary>
        /// <param name="nombre">Nombre</param>
        protected void BorrarValor(string nombre)
        {
            ViewState.Remove(nombre);
        }

        /// <summary>
        /// Consultar si existe el valor.
        /// </summary>
        /// <param name="nombre">Nombre</param>
        /// <returns>True o False.</returns>
        protected bool ExisteValor(string nombre)
        {
            return ViewState[nombre] != null;
        }

        /// <summary>
        /// Obtener el valor convertido a Int32.
        /// </summary>
        /// <param name="nombre">Nombre</param>
        /// <returns>Valor</returns>
        protected int ValorInt32(string nombre)
        {
            return int.Parse(Valor(nombre).ToString());
        }

        /// <summary>
        /// Obtener el valor convertido a Boolean.
        /// </summary>
        /// <param name="nombre">Nombre</param>
        /// <returns>Valor</returns>
        protected bool ValorBoolean(string nombre)
        {
            return bool.Parse(Valor(nombre).ToString());
        }

        /// <summary>
        /// Obtener el valor convertido a DataTable.
        /// </summary>
        /// <param name="nombre">Nombre</param>
        /// <returns>Valor</returns>
        protected DataTable ValorDataTable(string nombre)
        {
            return (DataTable)(Valor(nombre));
        }

        /// <summary>
        /// Obtener el valor.
        /// </summary>
        /// <param name="nombre">Nombre</param>
        /// <returns>Valor</returns>
        protected object Valor(string nombre)
        {
            return ViewState[nombre];
        }
    }
}